/**
  *******************************************************************************
  * @author   正点原子@ALIENTEK
  *           技术论坛 {@link www.openedv.com}
  *
  * @file     delay.c
  * @brief    This file management delays through the SysTick's
  *           normal count mode(suitable for STM32F10x series).
  *           本文件使用 SysTick 的普通计数模式对延迟进行管理（适合 STM32F10x 系列）
  *
  * @note     delay_ms(u16 nms): Delay nms milliseconds.
  *           delay_us(u32 nus): Delay nus microsecond.
  *
  *******************************************************************************
  * Change Logs:
  *   Date           Author       Notes
  *   2010-01-01     ALIENTEK     the first version
  *                  v1.2         修正了中断中调用出现死循环的错误
  *                               防止延时不准确，采用 do while 结构！
  *
  *                  v1.3         增加了对 UCOSII 延时的支持。
  *                               如果使用 UCOSII，delay_init 会自动设置 SYSTICK 的值，使之与 UCOSII 的 TICKS_PER_SEC 对应。
  *                               delay_ms 和 delay_us也进行了针对 UCOSII 的改造。
  *                               delay_us 可以在 UCOSII 下使用，而且准确度很高，更重要的是没有占用额外的定时器。
  *                               delay_ms 在 UCOSII 下，可以当成 OSTimeDly 来用，在未启动ucos时，它采用delay_us实现，从而准确延时
  *                               可以用来初始化外设，在启动了 UCOSII 之后 delay_ms 根据延时的长短，选择 OSTimeDly 实现或者 delay_us 实现。
  *
  *   2011-09-29     v1.4         修改了使用 UCOSII，但是 UCOSII 未启动的时候，delay_ms 中中断无法响应的 bug。
  *   2012-09-02     v1.5         在 delay_us 加入 UCOSII 上锁，防止由于 UCOSII 打断 delay_us 的执行，可能导致的延时不准。
  *   2015-01-09     v1.6         在 delay_ms 加入 OSLockNesting 判断。
  *   2015-03-19     v1.7         修改 OS 支持方式，以支持任意 OS（不限于 UCOSII 和 UCOSIII，理论上任意 OS 都可以支持）
  *                               添加：delay_osrunning/delay_ostickspersec/delay_osintnesting 三个宏定义
  *                               添加：delay_osschedlock/delay_osschedunlock/delay_ostimedly 三个函数
  *   2015-05-19     v1.8         修正 UCOSIII 支持时的 2 个bug：
  *                                   delay_tickspersec 改为：delay_ostickspersec
  *                                   delay_intnesting 改为：delay_osintnesting
  *******************************************************************************
  * @attention
  *
  *  本程序只供学习使用，未经作者许可，不得用于其它任何用途
  *  版权所有，盗版必究。
  *  Copyright (c) 广州市星翼电子科技有限公司 2009-2023
  *  All rights reserved.
  *******************************************************************************
  */

#ifndef __DELAY_H
#define __DELAY_H 			   
#include "alientek_sys.h"

void delay_init(u8 SYSCLK);
void delay_ms(u16 nms);
void delay_us(u32 nus);

#endif





























